Пульт.Онлайн /

Управление удаленными устройствами через Туннель

Термином "туннель" обозначается набор утилит, с помощью которых можно организовать безопасный удаленный доступ к контроллерам и другим сетевым устройствам, находящимся на объектах. Например, можно удаленно прошить контроллер или зайти на веб-интерфейс коммутатора.

Принцип работы

Туннель организуется с помощью трех сервисов: туннель-консоль, туннель-сервер и туннель-клиент (далее консоль, сервер и клиент). В интернете установлен сервер, к которому подключаются установленный в локальной сети объекта клиент и установленная в локальной сети условного офиса консоль.

Такая система позволяет транслировать все сетевые запросы от рабочей станции через открытые TCP и UDP порты консоли на соответствующие порты целевого устройства.

Схема работы туннеля

Требования к оборудованию

Консоль

Дистрибутив туннель-консоли для Windows

При запуске консоли на ПК ее IP будет 127.0.0.1. Соответственно, все программы, работающие через туннель с удаленными целями, необходимо направлять на 127.0.0.1. В случае, если UDP запросы не проходят на 127.0.0.1 - можно использовать внешний IP-адрес ПК (192.168.0.XXX).

Сервер

Сервер может быть установлен в облаке, у провайдера или в собственном датацентре. Требования минимальные (1ЦПУ, 500МБ ОЗУ, 50МБ диск. пространства).

Для обеспечения безопасности сервер по умолчанию работает через SSL. В идеале, необходимо наличие доменного имени и сертификат от доверенного центра, но при их отсутствии сервер автоматически создает самоподписные сертификаты и работает с ними. В таком случае у клиента и консоли необходимо отключить в конфигах параметр ssl_check_certificate.

Пульт.Онлайн предоставляет бесплатный публичный доступ к серверу tunnel.pult.online, но в случае необходимости можно легко поднять свой собственный.

Дистрибутив туннель-сервера для Linux

Клиент

Туннель-клиент входит в состав дистрибутивов Сервера и Шлюза в виде сервиса tunnelclient. Туннель-клиент по умолчанию запущен и настроен на сервер tunnel.pult.online. Вы можете отключить сервис tunnelclient или направить на собственный туннель-сервер, изменив настройки сервиса.

Работа с системой

  1. На объекте устанавливаем клиент, указываем ему рабочий сервер, определяем его ID и пароль (смотрим в конфиге после установки или в веб-интерфейсе, если в клиент составе шлюза)

  2. В офисе запускаем консоль (локально на ПК или на отдельном устройстве)

  3. Работаем с IP консоли, как будто это удаленная цель

Важный момент: Если ID клиента И/ИЛИ пароль указаны неверно - индикатор соединения консоли покажет отсутствие связи с клиентом. Это сделано для минимизации рисков в случае брутфорса по ID клиентов (которые по умолчанию являются MAC-адресами) - при неверном пароле сервер ответит, что клиент не найден, хотя клиент при этом может быть онлайн.

В один момент времени консоль работает только с одной целью, но работать с данной целью может множество пользователей и приложений. Т.е можно одновременно прошивать контроллер, настраивать его через веб-интерфейс и при этом быть подключенным к нему по SSH или FTP.

С одним клиентом могут одновременно работать множество консолей. Если требуется доступ к устройству, на котором установлен сам клиент - в качестве IP-адреса цели укажите 127.0.0.1.

На скриншоте показано, что консоль запущена на локальном ПК через tunnel.pult.online с клиентом 985DADB20DF1, целью является узел 192.168.0.100 в локальной сети клиента. Работа ведется с портами 80,22,502,8080,8000 (TCP) и 12345 (UDP). В данном примере выполнялась прошивка Segnetics SMH4. Программе, выполняющей прошивку (SMLogix) указывался IP контроллера = 192.168.0.162 (IP-адрес ПК, на котором запущена туннель-консоль). Соответственно, все данные от SMLogix, приходящие на данный IP, транслировались консолью на удаленный контроллер и обратно.

Конфигурация

В линуксовых дистрибутивах конфигурационные файлы утилит можно отредактировать через терминал.
По умолчанию, файлы располагаются в следующих локациях:

/pult_tunnelserver/services/tunnelserver/config.cfg   
/pult_gateway/services/tunnelclient/config.cfg    
  Email
  SMS
   fdb_list
   fdb_load
   fdb_move
   fdb_paths
   node_list
   subscribe
   var_get
   var_list
   var_set